{\rtf1\ansi\ansicpg1250\deff0\deflang1038{\fonttbl{\f0\fswiss\fcharset238{\*\fname Arial;}Arial CE;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\b\f0\fs32 Literal\par
\b0\fs20\par
\b Le\'edr\'e1s: \b0\par
Ez az oszt\'e1ly egy liter\'e1lnak a le\'edr\'e1s\'e1ra szolg\'e1l. T\'e1rolja a predik\'e1tumszimb\'f3lum\'e1nak a nev\'e9t, a predki\'e1tum param\'e9tereinek a sz\'e1m\'e1t, \'e9s hogy neg\'e1lva van-e ez a predki\'e1tum.\par
\par
\b Adattagjai:\par
\b0 -jel: String: A liter\'e1l jel\'e9t t\'e1rolja, ami egy predik\'e1tumszimb\'f3lum.\par
-negalas: Boolean: Ha igaz, akkor neg\'e1lva szerepel, ha hamis, akkor nincs negalva az a predik\'e1tum, amib\'f5l ez a liter\'e1l \'e1ll. \par
-parameterekSzama: Integer: Azt tartalmazza, hogy h\'e1ny param\'e9tere van ennek a liter\'e1lnak.\par
\par
\b F\'fcggv\'e9nyei:\b0\par
+getJel(): String: Visszaadja annak a predik\'e1tumszimb\'f3lumnak a nev\'e9t, amelyb\'f5l ez a liter\'e1l \'e1ll.\par
+setJel(ujJel: String): void: A param\'e9terk\'e9nt megadott Stringgel lehet m\'f3dos\'edtani a litar\'e1l predik\'e1tumszimb\'f3lum\'e1nak a jel\'e9t.\par
+getNegalas(): Boolean: Visszaadja, hogy neg\'e1lva van-e a liter\'e1lt alkot\'f3 predik\'e1tum.\par
+setNegalas(): void: Az negalas adattag \'e9rt\'e9k\'e9t v\'e1ltoztatja meg. Ha az igaz volt, akkor hamis lesz. Ha hamis volt, igaz lesz.\par
+getParameterekSzama(): Integer: Visszaadja, hogy h\'e1ny param\'e9terrel rendelkezik a liter\'e1l.\par
+setParameterekSzam(ujErtek: Integer): void: A param\'e9terk\'e9nt megadott \'e9rt\'e9kre cser\'e9li le parameterekSzama adattag \'e9rt\'e9k\'e9t.\par
\par
\b\fs32 Parameter\par
\b0\fs20\par
\b Le\'edr\'e1s:\par
\b0 Ez egy egyszer\'fb adatszerkezet. Tartalmazza egy param\'e9ternek a nev\'e9t, \'e9s azt, hogy az egy konstans vagy v\'e1ltoz\'f3-e.\par
\par
\b Adattagjai:\par
\b0 +nev: String: A param\'e9ter neve.\par
+tipus: String: Annak az eld\'f6nt\'e9s\'e9re szolg\'e1l, hogy v\'e1ltoz\'f3 vagy komstans-e a param\'e9ter.\par
\par
\b\fs32 Axioma\par
\b0\fs20\par
\b Le\'edr\'e1s: \b0\par
Ez egy axi\'f3ma le\'edr\'e1s\'e1ra szolg\'e1l\'f3 oszt\'e1ly. 3 k\'fcl\'f6nb\'f6z\'f5 list\'e1ban t\'e1rolja sorrendhelyesen a benne l\'e9v\'f5 liter\'e1lokat, oper\'e1torokat \'e9s a litar\'e1lokban szerepl\'f5 param\'e9tereket.\par
Pl.: \'edgy n\'e9z ki ennek a t\'e1rol\'e1sa: P(x)vQ(Feri, y)vR(y)\par
literalok: P, Q, R\par
operatorok: v, v\par
parameterek: x, Feri, y, y\par
\par
\b Adattagjai:\par
\b0 -literalok: List<Literal>: Az axi\'f3m\'e1ban szerepl\'f5 liter\'e1lok felsorol\'e1sa sorrendhelyesen egy list\'e1ban.\par
-operatorok: List<String>: Az axi\'f3m\'e1ban szerepl\'f5 oper\'e1torok felsorol\'e1sa sorrendhelyesen egy list\'e1ban.\par
-parameterek: List<String>: Az axi\'f3m\'e1ban szerepl\'f5 param\'e9terek felsorol\'e1sa sorrendhelyesen egy list\'e1ban.\par
\par
\b F\'fcggv\'e9nyei:\par
\b0 +getLiteralok(): List<Literal>: Visszaadja az axi\'f3m\'e1ban szerepl\'f5 liter\'e1lok sorrendhelyes list\'e1j\'e1t.\par
+literalokhozAd(literal: Literal): void: Egy \'faj liter\'e1lt lehet vele besz\'farni a literalok list\'e1j\'e1ba.\par
+literalokbolElvesz(literal: Literal): void: Egy liter\'e1lt lehet vele kivenni a literalok list\'e1j\'e1b\'f3l.\par
+getOperatorok(): List<String>: Visszaadja az axi\'f3m\'e1ban szerepl\'f5 oper\'e1torok sorrendhelyes list\'e1j\'e1t.\par
+operatorokhozAd(operator: String): void: Egy \'faj oper\'e1tort lehet vele besz\'farni az operatorok list\'e1j\'e1ba.\par
+operatorokbolElvesz(operator: String): void: Egy oper\'e1tort lehet vele kivenni az operatorok list\'e1j\'e1b\'f3l.\par
+getParameterek(): List<String>: Visszaadja az axi\'f3m\'e1ban szerepl\'f5 param\'e9terek sorrendhelyes list\'e1j\'e1t.\par
+parameterekhezAd(parameter: String): void: Egy \'faj param\'e9tert lehet vele besz\'farni a parameterek list\'e1j\'e1ba.\par
+parameterekbolElvesz(parameter: String): void: Egy param\'e9tert lehet vele kivenni a parameterek list\'e1j\'e1b\'f3l.\par
+axiomaNezete(): String: Ez visszaadja az eg\'e9sz axi\'f3m\'e1t egy Stringben. Arra az esetre lesz j\'f3, ha meg akarunk egy axi\'f3m\'e1t egyben jelen\'edteni a k\'e9perny\'f5n.\par
 \par
\par
\b\fs32 Csucs\par
\b0\fs20\par
\b Le\'edr\'e1s:\b0\par
 Ez az oszt\'e1ly szolg\'e1l majd a keres\'e9s\'fcnk sor\'e1n l\'e9trej\'f6v\'f5 bizony\'edt\'e1si \'c9S/VAGY FA cs\'facsainak az \'e1br\'e1zol\'e1s\'e1ra. Egy cs\'facs gyerekein\'e9l elvileg lehets\'e9ges, hogy ak\'e1rh\'e1ny "\'e9s" vagy ak\'e1rh\'e1ny "vagy" \'e9l\'fb gyerek indul ki. Ez \'e1t\'edrhat\'f3 egy tr\'fckkel "Tiszt\'e1n \'e9s-vagy gr\'e1ff\'e1", amelyben mindem cs\'facsb\'f3l csak "\'e9s" vagy csak "vagy" \'e9l indul ki. Ezt a tr\'fckk\'f6t majd k\'e9s\'f5bb r\'e9szletezem majd egy k\'e9p besz\'far\'e1s\'e1val is. R\'f6viden annyi, hogy fikt\'edv cs\'facsokat kell beiktatni, amelyekb\'f5l annyi kell, ah\'e1ny "vagy" \'e9lr\'e9sz indul ki egy cs\'facsb\'f3l. \'cdgy k\'f6nnyebb lesz \'e1br\'e1zolni majd a f\'e1nkat.\par
\par
\b Adattagjai:\b0\par
-sorszam: Integer: Ha majd elkezdj\'fck t\'e1rolni ezt a cs\'facsot egy list\'e1ban, ezzel az sorsz\'e1mmal hivatkozhatunk r\'e1. C\'e9lszer\'fb ezeket majd nem negat\'edv sz\'e1moknak venni, a list\'e1ban val\'f3 indexel\'e9s miatt.\par
-szulo: Integer: Egy cs\'facs sz\'fbl\'f5j\'e9nek a sorsz\'e1m\'e1t t\'e1rolja. Ha egy cs\'facs a fa gy\'f6kere, akkor ennek jel\'f6l\'e9s\'e9re \'e9rdemes lesz egy negat\'edv sz\'e1mot v\'e1lasztani. Pl.: -1.\par
-gyerekei: List<Integer>: Egy cs\'facs gyerekeinek a sorsz\'e1m\'e1t t\'e1rolja ebben a list\'e1ban.\par
-gyerekekTipusa: \{es, vagy\}: Ez az adattag egy felsorol\'e1si t\'edpusb\'f3l fogja felvenni az \'e9rt\'e9k\'e9t, amellyel el lehet d\'f6nteni, hogy a gyerekei "\'e9s" vagy "vagy" m\'f3don kapcsol\'f3dnak a sz\'fbl\'f5h\'f6z.\par
-axioma: Axioma: Ez az adattag tartalmazza azt az axi\'f3m\'e1t, ami megmaradt az eredeti, kiindul\'f3 axi\'f3m\'e1b\'f3l a feldarabolgat\'e1sok sor\'e1n.\par
\par
\b F\'fcggv\'e9nyei:\b0\par
+getSorszam(): Integer: Visszadja a cs\'facs sorszam adattagj\'e1nak az \'e9rt\'e9k\'e9t.\par
+getSzulo(): Integer: Visszadja a sz\'fbl\'f5 cs\'facs sorsz\'e1m\'e1t.\par
+setSzulo(ujSzulo: Integer): void: A megadott \'e9rt\'e9kre cser\'e9li le a cs\'facs sz\'fbl\'f5j\'e9nek a sorsz\'e1m\'e1t.\par
+getGyerekei(): List<Integer>: Visszaadja a cs\'facs gyerekeinek sorsz\'e1m\'e1t tartalmaz\'f3 list\'e1t.\par
+gyerekeihezAd(gyerekSorszama: Integer): void: A cs\'facs gyerekeinek a list\'e1j\'e1ba lehet egy \'faj cs\'facsnak a sorsz\'e1m\'e1t besz\'farni.\par
+gyerekeibolElvesz(gyerekSorszama: Integer): void: A cs\'facs gyerekeinek a list\'e1j\'e1b\'f3l lehet vele egy \'e9rt\'e9ket kivenni.\par
+getGyerekekTipusa(): \{es, vagy\}: Visszaadja, hogy a cs\'facs gyerekei "\'e9s" vagy "vagy" m\'f3don kapcsol\'f3dnak a sz\'fbl\'f5j\'e9hez.\par
+setGyerekekTipusa(tipus: \{es, vagy\}): void: Ezzel lehet egy cs\'facs gyerekeinek a sz\'fbl\'f5h\'f6z val\'f3 kapcsol\'f3d\'e1si m\'f3dj\'e1t megv\'e1ltoztatni.\par
+getAxioma(): Axioma: Visszaadja a cs\'facs axioma adattagj\'e1t.\par
\par
\par
\b\fs32 EsVagyFa\par
\b0\fs20\par
\b Le\'edras:\par
\b0 Egy \'c9S/VAGY FA le\'edr\'e1s\'e1t adja meg ez az oszt\'e1ly. Ennek a seg\'edts\'e9g\'e9vel adja majd meg a visszal\'e9p\'e9ses keres\'e9s\'fcnk a bizony\'edt\'e1si f\'e1t.\par
\par
\b Adattagjai:\par
\b0 -csucsLB: Label: A kirajzol\'e1sn\'e1l lesz r\'e1 sz\'fcks\'e9g. Erre \'edrja ki a program annak a cs\'facsnak az axi\'f3m\'e1j\'e1t, amelyet a rajzol\'e1sn\'e1l megh\'edvtunk.\par
-szuloLB: Label: A kirajzol\'e1sn\'e1l lesz r\'e1 sz\'fcks\'e9g. Erre \'edrja ki a program a megh\'edvott cs\'facs sz\'fbl\'f5j\'e9nek az axi\'f3m\'e1j\'e1t.\par
-EsVagyLB: Label: A kirajzol\'e1sn\'e1l lesz r\'e1 sz\'fcks\'e9g. Erre \'edrja ki a program, hogy a megh\'edvott cs\'facs milyen tipus\'fa gyerek.\par
-kirajzoltCsucs: Integer: A kirajzol\'e1sn\'e1l lesz r\'e1 sz\'fcks\'e9g. Ez t\'e1rolja el, hogy \'e9pp mely cs\'facs kirajzol\'e1s\'e1n\'e1l j\'e1runk. A f\'e1nak felfel\'e9 val\'f3 l\'e9pked\'e9s\'e9n\'e9l lesz r\'e1 sz\'fcks\'e9g.\par
-elozoek: List<Integer>: A kirajzol\'e1sn\'e1l lesz r\'e1 sz\'fcks\'e9g. Ez t\'e1rolja el a felfel\'e9 val\'f3 l\'e9pked\'e9s\'e9n\'e9l, hogy milyen cs\'facsokat \'e9rintett\'fcnk, hogy azt\'e1n vissza is tudjunk l\'e9pkedni.\par
-kirajzoloForm: Form: Erre rajzoljuk majd ki a cs\'facsokat \'e9s sz\'fbl\'f5jiket.\par
-csucsok: List<Csucs>: A f\'e1ban szerepl\'f5 cs\'facsokat tartalmazza egy list\'e1ban.\par
\par
\b F\'fcggv\'e9nyi:\par
\b0 +startCsucsBeszurasa(axiom: Axioma): void: Ez szolg\'e1l a fa legels\'f5 elem\'e9nek a besz\'far\'e1s\'e1ra, mert ezt m\'e1sk\'e9pp kell csin\'e1lni. mint a t\'f6bbi cs\'facsot, mivel ennek nincs sz\'fbl\'f5je.\par
+csucsBeszuras(szuloCsucs: Integer, axioma: Axioma): void: Egy \'faj cs\'facsot lehet vele besz\'farni a f\'e1ba, annak sz\'fbl\'f5j\'e9t \'e9s a benne szerepl\'f5 axi\'f3ma r\'e9szletet megadva.\par
+levelCsucsTorlese(sorszam: Integer): void: Egy lev\'e9lcs\'facsot tudunk majd ezzel a f\'fcggv\'e9nnyel t\'f6r\'f6lni, annak a sorsz\'e1m\'e1t megadva.\par
+getCsucsAxioma(sorszam: Integer): Axioma: Egy cs\'facs sorsz\'e1m\'e1t megadva, visszaadja az ann\'e1l a cs\'facsn\'e1l t\'e1rolt axi\'f3m\'e1t.\par
+getCsucsSzuloje(sorszam: Integer): Integer: Egy cs\'facs sorsz\'e1m\'e1t megadva, visszaadja annak sz\'fcl\'f5j\'e9nek a sorsz\'e1m\'e1t.\par
+getCsucsGyerekei(sorszam: Integer): List<Integer>: Egy cs\'facs sorsz\'e1m\'e1t megadva, visszaadja annak a gyerekeinek a sorsz\'e1m\'e1t.\par
+egyCsucsGyerekeinekTipusa(sorszam: Integer): \{es, vagy\}: Visszaadja egy cs\'facs gyerekeinek a cs\'facshoz val\'f3 \'f6sszek\'f6ttet\'e9s\'e9nek a m\'f3dj\'e1t. "\'e9s" vagy "vagy" \'e9lek indulnak-e ki a cs\'facsb\'f3l?\par
+kirajzolas(sorszam: Integer): void: Kirajzolja azt a cs\'facsot egy formra, amit itt megadunk neki, \'e9s el\'e9 annak a sz\'fbl\'f5j\'e9t is, hogy l\'e1ssuk a bizony\'edt\'e1s l\'e9p\'e9seit. Lesz a formon 2 gomb is amivel l\'e9pkedhet\'fcnk felfel\'e9 \'e9s lefel\'e9 a f\'e1n, hogy l\'e1ssuk a t\'f6bbi l\'e9p\'e9s\'e9t is ennek a bizony\'edt\'e1s r\'e9sznek.\par
-kirajzoloForm_Paint(sender Object, e PaintEventArgs): void: Ez csak egy kis diz\'e1jnol\'e1sra szolg\'e1l a cs\'facsok kirajzol\'e1s\'e1n\'e1l. Csin\'e1l 1 vonalat a kirajzolt cs\'facs \'e9s a sz\'fbl\'f5je k\'f6zz\'e9.\par
-felBT_Click(sender Object, e EventArgs): void: A felBT-nak egy esem\'e9ny\'e9t \'edrja le. Ez val\'f3s\'edtja meg, hogy felfel\'e9 l\'e9pkedj\'fcnk a f\'e1n.\par
-leBT_Click(sender Object, e EventArgs): void: A leBT-nak egy esem\'e9ny\'e9t \'edrja le. Ez val\'f3s\'edtja meg, hogy lefel\'e9 l\'e9pkedj\'fcnk a f\'e1n.\par
-ujrarajzolas(csucsSzama: Integer): void: Ezt a f\'fcggv\'e9nyt h\'edvjuk meg akkor, ha l\'e9pked\'fcnk felfel\'e9 \'e9s lefel\'e9 a f\'e1n. L\'e9nyeg\'e9ben \'fajra ki\'edrja a megjelen\'edtett formra az \'faj inform\'e1ci\'f3kat.\par
\par
\par
\par
\b\fs32 VisszalepesesKereses\par
\b0\fs20\par
\b Le\'edras: \par
\b0 Ez adja meg a visszal\'e9p\'e9ses keres\'e9s\'fcnk algoritmus\'e1t egy \'c9S/VAGY F\'c1N. Megadhatjuk neki a keres\'e9s m\'e9lys\'e9g\'e9t, hogy milyen m\'f3d\'f3n keresse az eredm\'e9nyt (el\'f5re vagy vissza). Megadja v\'e9g\'fcl, hogy eredm\'e9nnyel z\'e1rult-e a keres\'e9s, valamint kirajzolja nek\'fcnk a bizony\'edt\'e1si f\'e1t.\par
\par
\b Adattagjai:\par
\b0 -bizonyitasiFa: EsVagyFa: Ez a fa \'e1ll majd el\'f5 a bizony\'edt\'e1s l\'e9p\'e9sei sor\'e1n.\par
-tipus: \{elore, vissza\}: Ez egy felsorol\'e1sos t\'edpusb\'f3l veszi fel az \'e9rt\'e9keit, amellyel a a szab\'e1lyalap\'fa reprezent\'e1ci\'f3 m\'f3dszer\'e9t tudjuk eld\'f6nteni.\par
-melyseg: Integer: Megadja, hogy milyen m\'e9lyen keressen a visszal\'e9p\'e9ses keres\'e9s\'fcnk.\par
-reprezentacio: SzabalyalapuReprezentacio: Ezzel adjuk meg a keres\'e9s sz\'e1m\'e1ra a t\'e9nyeket, szab\'e1lyokat \'e9s a c\'e9lokat.\par
\par
\b F\'fcggv\'e9nyei:\par
\b0 +start(axiomak: List<Axioma>): void: L\'e9trhozhatjuk vele a keres\'e9s kezdeti \'e1llapot\'e1t. Az el\'f5re vagy visszafele m\'f3dszert\'f5l f\'fcgg\'f5en ide param\'e9ternek a t\'e9nyeket vagy a c\'e9lokat kell megadni.\par
+lepes(): void: V\'e9grehajtja az algoritmus egy l\'e9p\'e9s\'e9t, ha az lehets\'e9ges.\par
+visszaLepes(): void: Visszal\'e9p\'fcnk vele egyet, ha sz\'fcks\'e9ges.\par
+konzisztenciaEllenorzes(): Boolean: Megn\'e9zi, hogy t\'f6rt\'e9nt-e konzisztencia \'fctk\'f6z\'e9s-e.\par
+vege(): Boolean: Megn\'e9zi, hogy v\'e9get \'e9rt-e az algoritmus.\par
+sikeresseg(): Boolean: Megn\'e9zi, hogy ha v\'e9get \'e9rt-e az algoritmus, akkor az sikeres volt-e.\par
+bizonyitasiFaKirajzolasa(): void: Kirajzolja az \'e9ppen aktu\'e1lis f\'e1t.\par
+getMelyseg(): Integer: Visszaadja, hogy milyen m\'e9lys\'e9gig keres az algoritmusunk.\par
+setMelyseg(melyseg: Integer): void: Lecser\'e9li a melyseg adattag \'e9rt\'e9k\'e9t a megadott param\'e9ter \'e9rt\'e9k\'e9re.\par
\par
\par
\b\fs32 SzabalyalapuReprezentacio\par
\b0\fs20\par
\b Le\'edr\'e1s: \par
\b0 Itt t\'e1roljuk a t\'e9nyeket, a szab\'e1lyokat \'e9s c\'e9lokat egy-egy list\'e1ban felsorolva. A kvant\'e1l\'e1st l\'e9nyegtelen felt\'fcnteni az axi\'f3m\'e1k haszn\'e1latakor, mivel t\'edpust\'f3l f\'fcgg\'f5en \'fagyis mindegyik csak egzisztenc\'e1lis vagy csak univerz\'e1lis.\par
\par
\b Adattagjai:\par
\b0 -tenyek: List<Axioma>: A t\'e9ny axi\'f3m\'e1k ker\'fclnek bele ebbe a list\'e1ba.\par
-szabalyok: List<Axioma>: A szab\'e1ly axi\'f3m\'e1k ker\'fclnek bele ebbe a list\'e1ba.\par
-celok: List<Axioma>: A c\'e9l axi\'f3m\'e1k ker\'fclnek bele ebbe a list\'e1ba.\par
\par
\b F\'fcggv\'e9nyei:\par
\b0 +getTenyek(): List<Axioma>: Visszaadja a tenyek list\'e1j\'e1t.\par
+tenyekhezAd(axioma: Axioma): void: Egy \'faj axi\'f3m\'e1t lehet vele besz\'farni a tenyek list\'e1ba.\par
+tenyekbolElvesz(axioma: Axioma): void: Egy axi\'f3m\'e1t lehet vele kivenni a tenyek list\'e1j\'e1b\'f3l.\par
+getSzabalyok(): List<Axioma>: Visszaadja a szabalyok list\'e1j\'e1t.\par
+szabalyokhozAd(axioma: Axioma): void: Egy \'faj axi\'f3m\'e1t lehet vele besz\'farni a szabalyok list\'e1ba.\par
+szabalyokbolElvesz(axioma: Axioma): void: Egy axi\'f3m\'e1t lehet vele kivenni a szabalyok list\'e1j\'e1b\'f3l.\par
+getCelok(): List<Axioma>: Visszaadja a celok list\'e1j\'e1t.\par
+celokhozAd(axioma: Axioma): void: Egy \'faj axi\'f3m\'e1t lehet vele besz\'farni a celok list\'e1ba.\par
+celokbolElvesz(axioma: Axioma): void: Egy axi\'f3m\'e1t lehet vele kivenni a celok list\'e1j\'e1b\'f3l.\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
\par
}
 